package cn.jetpiece.cloud.dict.app.modular.dict.mapper;

import cn.jetpiece.cloud.dict.api.model.result.CategoryResult;
import cn.jetpiece.cloud.dict.app.modular.dict.entity.Category;
import cn.jetpiece.cloud.model.model.TreeSelectModel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * @author hancp
 * @version 1.0
 * @description: 分类字典
 * @date 2021-11-08 10:15:39
 */
public interface CategoryMapper extends BaseMapper<Category> {

    /**
     * 根据父级ID查询树节点数据
     *
     * @param pid
     * @return
     */
    List<TreeSelectModel> queryListByPid(@Param("pid") Long pid, @Param("query") Map<String, String> query);

    /**
     * @param code
     * @return
     */
    @Select("SELECT id FROM sys_category WHERE CODE = #{code,jdbcType=VARCHAR}")
    Long queryIdByCode(@Param("code") String code);

    /**
     * @param code
     * @return
     */
    @Select("SELECT third_part_code FROM sys_category WHERE CODE = #{code,jdbcType=VARCHAR}")
    String queryThirdPartCodeByCode(@Param("code") String code);

    /**
     * 获取当前节点的所有父节点信息
     *
     * @param id
     * @return
     */
    List<Category> queryParentById(@Param("id") Long id);

    /**
     * 获取当前节点的所有父节点信息自定义规则信息
     *
     * @param id
     * @return
     */
    List<CategoryResult> queryParentRuleById(@Param("id") Long id);

    /**
     * 通过id 获取所有的子节点
     *
     * @param id
     * @param isContainSelf {1:包含 0:不包含}
     * @return
     */
    List<Category> queryAllChildrenByPid(@Param("id") Long id, @Param("isContainSelf") Integer isContainSelf);

}
